<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 回调函数就是将一个函数作为参数，传递给另外一函数，再某一个时间会被调用，那么这就是回调函数，如果这个函数被立即执行
        // 那么这个函数就是同步回调，如果他需要等待一定的时间再去执行，那么就是异步回调

        // 同步
        function sun(a) {
            let b = 33
            console.log(21, b); //先出结果
            if (a) {
                a(b)
            }
        }
        sun(function(b) {
            console.log(24, b); //后出结果
        })

        // 异步
        function sun2(a) {
            let b = 33
            if (a) {
                setTimeout(() => {
                    a(b)
                }, 2000)
            }
            console.log(31, b); //先出31
        }
        sun2(function(b) {
            console.log(37, b); //最后出39
        })
        console.log(39, 123); //再出39
    </script>
</body>

</html>